Method and system for embedded network device installation

ABSTRACT

The present disclosed system is directed toward a communication and management system that dynamically targets network devices for content deployment, such as application programs, device drivers, configuration files, and registry subhives. Moreover, the present system targets users of network devices for promotions, such as advertisements offered by Internet e-commerce sites. Promotions are generally icons or graphic images with links to host web servers overlaying a video display, but also includes audio and video clips or data streams. Network devices and their users are targeted through user profiles. User profiles are created when network devices register with the system server and are continually updated with information provided by user activity and event logs that are periodically uploaded from each device. The present system implements a scalable messaging system for data transmission between the system server and among the network devices such that it is neutral as to the specific hardware platforms on which it is implemented.

RELATED APPLICATIONS

[0001] This application is a continuation of U.S. application Ser. No.09/515,032, filed Mar. 6, 2000, which claims the benefit of U.S.Provisional Application No. 60/185,202, filed on Feb. 25, 2000. Theentire teachings of the above applications are incorporated herein byreference.

BACKGROUND OF THE INVENTION.

[0002] Generally, under the current state of technology and in the past,television has been delivered to the residential home either throughradio-frequency broadcasts, satellite downlink, or over coaxial cabletelevision (CATV) network. Data network communications, such as Internetaccess, have been delivered via the telephone networks through dial-upconnections, ISDN (Integrated Services Digital Network), and DSL(Digital Subscriber Line) lines or over hybrid broadcast/data CATVnetworks, where a portion of the bandwidth transmitted by the coaxialcable is allocated for shared data network functionality using aCSMA/CD-style transmission protocol. Less commonly, data connections tothe home are provided via satellite links where data are downloaded viathe satellite link and uploads are handled through land lines, such asthe telephone network. Another technique is to transmit data to the homevia wireless, CAMA, for example, links.

[0003] Almost universally, the clients or network devices in theresidences are personal computers. Typically, they execute applicationprograms such as email clients and browsers that utilize the datanetwork connectivity offered by one of the above techniques.

[0004] The trend, however, is towards a more ubiquitous computing modelwhere the network devices in the home will be embedded systems designedfor a particular function or purpose. This has already occurred to somedegree. Today, for example, CATV network set-top boxes typically havelimited data communication capabilities. Their main function is tohandle channel access issues between residential users and a server onthe cable TV network.

[0005] In the future, the functionality offered by these set-top boxesor other embedded platforms, such as a game system, will be expanded.For example, they may offer Internet browsing capabilities ande-commerce serving capabilities. Moreover, it is anticipated thatcommon-household appliances will also have network functionality, inwhich they will be attached to the network to automate various tasks.

[0006] The data networks must evolve with deployment of these embeddedsystems. Where the personal computer can be updated with new networkdrivers as the network evolves, embedded client systems remainrelatively static. Moreover, the process of installation in theresidence must be made less complicated so that a network technician isnot required every time a new embedded device is connected onto thenetwork.

SUMMARY OF THE INVENTION

[0007] As the ubiquitous computing model is deployed, many of thenetwork devices installed on the data networks will be embedded devices,as opposed to the more complex systems such as personal computers. Thishas advantages in that embedded devices tend to be more stable due tostable configuration and operating systems.

[0008] The disadvantage, however, is in the flexibility of the networkdevices. It is more difficult for those systems to be adapted to changesin configuration or changes to the network. As a result, the networkinfrastructure must be more intelligent to maintain these embeddeddevices.

[0009] One issue that arises involves driver installation. Many times aperipheral device is connected to an embedded device. It would bedesirable if the network could handle the installation of the driversnecessary to enable the network device to use the peripheral.

[0010] The present disclosed system is directed toward a communicationand management system that dynamically targets network devices forcontent deployment, such as application programs, device drivers,configuration files, and registry subhives.

[0011] Moreover, the present system targets users of network devices forpromotions, such as advertisements offered by Internet e-commerce sites.Promotions are generally icons or graphic images with links to host webservers overlaying a video display, but also includes audio and videoclips or data streams.

[0012] Network devices and their users are targeted through userprofiles. User profiles are created when network devices register withthe system server and are continually updated with information providedby user activity and event logs that are periodically uploaded from eachdevice.

[0013] The present invention implements a scalable messaging system fordata transmission between the system server and among the networkdevices such that it is neutral as to the specific hardware platforms onwhich it is implemented.

[0014] In general, according to one aspect, the present inventionconcerns a system for driver installation on a network device over adata network. The system comprises a system agent that detects anidentification message from a peripheral device when attached to thenetwork device. Information concerning this message is then transferredto a system manager. The system manager compares the information to adatabase of driver information and notifies the network device regardingan appropriate driver for the peripheral device. In this way, the systemsupports changes on the embedded devices.

[0015] In general, according to one aspect, the identification messageis a plug-and-play string that is generated by the peripheral device,typically when attached to the network device. The system agent, on thenetwork device, transfers at least part of this string to the systemmanager. The system manager then compares the string to a database ofstrings for supported peripherals.

[0016] When the appropriate driver for the peripheral is found, thesystem agent is notified of a location of the driver on the network.Preferably, a bulk download transfer agent then requests download of thefile at the location. A bulk transfer download manager, executing on theserver system, answers this request by loading the requested file to thenetwork device.

[0017] Preferably, the server system maintains a status of the networkdevices. For example, once the driver has been loaded, the systemmanager is notified by the network device and updates a database storinga status of the network device.

[0018] Further, the system preferably handles the disconnection of theperipheral at the network device. Preferably, when the peripheral isdisconnected, the network device requests uninstallation instructions.This allows the network device to save operating system memory, and toload new peripheral devices if required without restart. Preferably, thesystem manager provides uninstallation instructions to the networkdevice. Once successful uninstallation of the driver has occurred, thesystem manager is notified by the system agent. The system manager thenupdates its database again concerning the status of the network device.

[0019] In general, according to another aspect, the invention alsofeatures a method for driver installation on a network device over adata network. The method comprises the network device detecting anidentification message for a peripheral device when attached to thenetwork device. The network device transfers information regardingidentification of the peripheral device to the server system. A systemmanager of the server system compares the information to a database ofdriver information to find an appropriate driver. The system managerthen notifies the network device regarding the appropriate driver forthe peripheral devices.

[0020] The above and other features of the invention including variousnovel details of construction and combinations of parts, and otheradvantages, will now be more particularly described with reference tothe accompanying drawings and pointed out in the claims. It will beunderstood that the particular method and device embodying the inventionare shown by way of illustration and not as a limitation of theinvention. The principles and features of this invention may be employedin various and numerous embodiments without departing from the scope ofthe invention.

BRIEF DESCRIPTION OF THE DRAWINGS

[0021] In the accompanying drawings, reference characters refer to thesame parts throughout the different views. The drawings are notnecessarily to scale; emphasis has instead been placed upon illustratingthe principles of the invention. Of the drawings:

[0022]FIG. 1A is a schematic block diagram depicting a cable networkinfrastructure in which one embodiment of the present inventionfunctions.

[0023]FIG. 1B is a schematic block diagram depicting a satellite networkinfrastructure in which another embodiment of the present inventionfunctions.

[0024]FIG. 1C is a schematic block diagram depicting a DigitalSubscriber Line (DSL) network infrastructure in which still anotherembodiment of the present invention functions.

[0025]FIG. 1D is a schematic block diagram depicting a wireless networkinfrastructure in which another embodiment of the present inventionfunctions.

[0026]FIG. 2A is a block diagram depicting the interaction of thecomponents of the server system and the embedded client system accordingto the invention.

[0027]FIG. 2B is a process diagram illustrating the interaction betweena queue manager and the message router according to the invention.

[0028]FIG. 2C is a process diagram illustrating a process for deliveringa message via the message router according to the invention.

[0029]FIG. 3 is a state line diagram illustrating a process forautomatically registering a device and generating user profiles fortargeting content according to the invention.

[0030]FIG. 4A is a state line diagram illustrating a process fortargeting consumers with content (e.g., graphical promotion) anddeploying the content to a targeted device according to the invention.

[0031]FIG. 4B is a process diagram illustrating a process for schedulingactivation of content with a predetermined date and time according tothe invention.

[0032]FIG. 4C is a process diagram illustrating a process for schedulingactivation of content by server activation according to the invention.

[0033]FIG. 4D is a process diagram illustrating a process for eventdriven activation of content according to the invention.

[0034]FIG. 4E is a block diagram depicting event driven activationinvolving trigger signals in the video stream according to theinvention.

[0035]FIG. 5A is an example of the Document Type Definition used todefine the document structure of the user activity and event logswritten in XML (Extensible Markup Language) according to the invention.

[0036]FIG. 5B is an example of the representation of events stored in auser activity and event log written in XML according to the invention.

[0037]FIG. 6 is a state line diagram illustrating a process forautomatically for updating user profiles through uploading and parsinguser activity and event logs according to the invention.

[0038]FIG. 7 is a process diagram illustrating a process for dynamicallyinstalling a driver on a network device according to the invention.

[0039]FIG. 8 is a flow diagram showing the uninstallation of the driveron the network device according to the invention.

DETAILED DESCRIPTION OF THE INVENTION

[0040] The present invention is a communications and management systemexecuting over a data network for targeting content, includingpromotions, to users of network devices whose attributes match theattributes of a group profile along with maintaining those networkdevices.

[0041] The system and methods of the present invention can beimplemented over a variety of data network infrastructure includingcable, satellite, Digital Subscriber Lines (DSL), and wireless networks.

[0042]FIG. 1A shows one embodiment of the present invention in which thecommunications and management system is implemented over a cablenetwork. In this environment, audio and video broadcasts are typicallyfrequency multiplexed with data transmissions on the coaxial cablesextending from the head end 50 to the exemplary network devices 80A,80B, 80C, and 80D (collectively referred to as 80).

[0043] Video content providers 20 as well as Internet content providers10 (i.e. host web servers) deliver their audio/video/data signals to acable service provider/internet service provider (CSP/ISP) data center40. The Internet content providers 10 deliver their data to the datacenter 40 via the Internet 30. Typically, video content providers 20transmit their video signals to the data center 40 via some broadcastmedium, such as conventional radio-frequency television broadcastingtechniques, or via a digital satellite downlink.

[0044] The CSP/ISP data center 40 transmits the audio/video/data signalsto multiple head ends 50 (only one being shown for simplicity ofillustration). The connection between the data center 40 and the headend 50 is typically a hybrid CATV/data connection, which is supported byan optical fiber infrastructure. Part of this infrastructure carries theaudio/video signals, which are directed from the data center 40 to thenetwork devices 80. Part of this network also carries the bi-directionaldata communications associated with network control and internet serviceprovisioning.

[0045] The head end 50 distributes the audio/video/data signals over acable network of hubs 60 and local nodes 70 to a variety of networkdevices 80, such as set-top boxes, web phones, and cable modems. Somenetwork devices 80D, such as a web phone, have a built-in video display310 and speaker system 315. Other network devices 80C are peripherallyattached to a video display device and speaker system such as atelevision 300.

[0046] In one embodiment of the present invention, the server system(100A and 100B, collectively referred to as 100), is located at theCSP/ISP data center 40 and the head end 50 of the cable network.Installation of the server system at the data center 40 and the head end40 allows for scalability. The server system 100A at the data center 40typically provides centralized management for configuring group profilesand content deployment options, while the server system 100B at the headend 50 preferably handles the registration, user profile updates,content deployment, and other services among the network devices 80.

[0047] There are alternative schemes for deploying the server system 100within the cable network infrastructure depending on the capacity of theserver system 100 and number of network devices 80. For example, theserver system 100 is deployed at the hub 60 level when the population ofdevices is sufficiently dense to necessitate such distribution of thecommunication load.

[0048]FIG. 1B shows an embodiment of the present invention in which thecommunications and management system is implemented on a satellitenetwork. In this environment, the server system 100 is located at datacenter 45.

[0049] The server system 100 transmits data to the network devices 80via a satellite uplink device 90 to a satellite 93, which, in turn,transmits the data to a residential satellite downlink dish 95. The dataare received by the network devices 80 connected to the downlink feed97.

[0050] For the return, upload, path, the network devices 80 transmitdata to the server system 100 through a built-in modem, other dial-updevice, or a land line system such as ISDN or DSL. The modem connects toa central office or point-of-presence (POP) 55, which, in turn,transmits the return-path data over the Internet 30 to the data center45.

[0051]FIG. 1C shows an embodiment of the present invention in which thecommunications and management system is implemented on a DigitalSubscriber Line (DSL) network. In this environment, the server system100 is located at data center 45.

[0052] The server system 100 communicates bi-directionally with thenetwork devices 80 via the Internet 30 or closed network connection,such as frame-relay, to a central office or point-of-presence (POP) 55.In one embodiment, the Internet connection between the server system 100and the central office 55 is over a Virtual Private Network (VPN)providing a private, secure, encrypted connection tunnel.

[0053] The network devices 80 are connected to the Internet 30 by thecentral office 55 via Digital Subscriber Lines (DSL).

[0054]FIG. 1D shows an embodiment of the present invention in which thecommunications and management system is implemented on a wirelessnetwork. This environment is similar to the DSL network with theexception that the network devices 80 are connected to the Internet 30by the central office 55 via wireless, typically CDMA, connections.

[0055]FIG. 2A shows the organization of the server system 100 and theembedded client system 200 interacting to implement the communicationsand management system.

[0056] In brief overview, the server system 100 includes a managementconsole 110, a system manager 120, a data store 130, a queue manager140, a message router 150, a bulk data transfer manager 160, and an XMLfile processor 170. The embedded client system 200 executing in thenetwork devices include a web browser 210, a system agent 220, apromotion notification agent 230, a queue manager 240, a logging agent,250, and a bulk data transfer agent 260.

[0057] In more detail, the management console 100 is preferablyimplemented as a web server. In one embodiment of the present invention,the management console 100 is a Microsoft® Internet Information Server(IIS) implementing Active Server Pages (ASP).

[0058] The management console 100 provides, upon request by a systemadministrator, a web page interface for specifying the content todeploy, the attributes of a group profile that target a market segmentof potential consumers, installation information, and criteria foractivating the content or displaying the promotions at the networkdevices. Upon submitting the web page, the management console 100communicates with the system manager 120, via an Application ProgrammingInterface (API) to store the targeted group profile, activationcriteria, and the content and promotions to the data store 130. In oneembodiment the API is a Microsoft® COM interface.

[0059] Content includes, but is not limited to, applications, devicedrivers, data files, registry sub-hives, and promotions. Promotions area special type of content that advertise goods and services. Promotionsoverlay the video display of a network device with a graphic, image, oranimated icon that launches a web browser to a host web server inresponse to the user clicking or selecting it. Promotions also includeaudio and video clips or data streams. One or more promotions can bedisplayed on the video display at one time.

[0060] The management console 110 also provides a web page interface tousers upon request during the initial registration of their networkdevices. Users will register through the web page interface, providingdata about themselves. Upon submitting the web page, the managementconsole 110 communicates with the system manager 120, via the COMinterface, to store the user data as attributes of a user profile. Theattributes of the user profile are associated with the attributes of thegroup profile in order to target potential consumers who would beinterested in the content or promotions.

[0061] The system manager 120 is an application-level process thatmanages the reading and writing of data to the data store 130. Thesystem manager 120, through its COM interface, allows the managementconsole 110 to store user profiles, content including promotions alongwith associated group profiles, installation information, and activationcriteria. In addition, the system manager 120 updates the user and groupprofiles whenever new attributes are received.

[0062] The system manager 120 also interacts with the system agent 220of the targeted network devices by sending and receiving messagesthrough a messaging protocol. The interaction of the system manager 120and the system agent 220 implement the scheduling of content deploymentas well as installation and activation of the content. In oneembodiment, the system manager is implemented as a Microsoft® COMobject.

[0063] The queue manager 140 is an application-level process thatcommunicates with the message router 150 on behalf of other processes,such as the system manager 120, in order to send and receive messagesamong the embedded client systems 200. In one embodiment, the queuemanager 140 is implemented as a C++ object. The queue manager 140 alsomanages incoming and outgoing queues on behalf of the other processes inthe system server 100.

[0064] The queue manager 140 handles two types of queues, persistentqueues and volatile queues. Messages, whose message type indicatespersistent storage, are stored such that the message will not be lostduring power outages and lost network connections. A persistent queue isstored in persistent flash memory or in a location on the hard disk ofthe network device. Other messages, not intended for persistent storage,are stored to volatile queues and might be lost during power outage andlost network connections.

[0065] The data store 130 is a database that stores the attributes ofthe user profiles, group profiles, content and promotions along with theactivation criteria. In addition, the data store 130 stores messagesintended for network devices that are unavailable during the initialdelivery attempt. The data store provides persistence to the data storedsuch that the content, profiles, and messages will not be lost during apower outage. In one embodiment, the data store 130 is a Microsoft® SQLversion 7 database. Since the data store stores content, it is alsoknown as a content store.

[0066] The bulk data transfer manager 160 is an application-levelprocess that is responsible for the transfer of bulk data to targetednetwork devices. Bulk data include large stream-oriented data, such as apromotions, files, or registry sub-key hives. The bulk data transfermanager 160 does not transmit data over the messaging protocol. Instead,it transmits serialized data over a network transport protocol, such asTCP/IP. The bulk data transfer manager 160 has access to the data store130 for transmitting content and promotions.

[0067] The XML File Processor 170 is an application-level process thatis responsible for parsing out the user attributes from the raw useractivity and event logs and updating the appropriate user profiles. Inone embodiment, the logs are stored as XML files in the data store 130.

[0068] In more detail of the embedded client system 200, the systemagent 220 is an application-level process that communicates with thesystem manager 120 handling various request messages and registration.In handling the various request messages, the system agent communicateswith the other embedded client system components in order to effect aproper response or behavior. In one embodiment, the system agent 220 isimplemented as a C++ object.

[0069] As in the system server, the queue manager 240 is anapplication-level process that communicates with the message router 150on behalf of other processes, such as the system agent 220, in order tosend and receive messages to the system server 100 and other networkdevices. In one embodiment, the queue manager 240 is implemented as aC++ object. The queue manager 240 also manages incoming and outgoingqueues on behalf of the other processes in the embedded client system200.

[0070] The queue manager 240 handles two types of queues, persistentqueues and volatile queues. Messages, whose message type indicatespersistent storage, are stored such that the message will not be lostduring power outages and lost network connections. A persistent queue isstored in persistent flash memory or in a location on the hard disk ofthe network device. Other messages, not intended for persistent storage,are stored to volatile queues and might be lost during power outage andlost network connections.

[0071] The bulk data transfer agent 260 is an application-level processthat handles requests from the system agent 220 to either downloadcontent and promotions or upload user activity and event logs. The bulkdata transfer agent 260 communicates with the bulk data transfer manager160 of the system server 100 over a network transport protocol, such asTCP/IP. The bulk data transfer agent 260 notifies the system agent 220upon completion or failure of the data transfer. In one embodiment, thesystem agent 220 is implemented as a C++ object.

[0072] The promotion notification agent 230 is an application-levelprocess that triggers and handles the display of promotions. Thepromotion notification agent 230 overlays the promotion or promotionsonto the video signal that gets displayed on a monitor connected to aset-top box or to a web phone display. The promotion notification agent230 coordinates the activation of promotions. A promotion notificationagent 230 will display the promotion in response to an event, invocationby the system manager 120, or scheduling information provided with thepromotion itself.

[0073] The web browser 210 is an application-level process that displaysweb pages from web host servers such as the management console 110 ofthe system server 100 enabling registration of user attributes.

[0074] The logging agent 250 is an application-level component thatmonitors and logs a variety of user activities and events. In oneembodiment, the logging agent 250 stores the log files in XML format.User activities and events that are tracked by the logging agent 250 arechannel events, promotion events, power events, peripheral events, andapplication events.

[0075] Channel events occur whenever the network device stays tuned to achannel for a configurable amount of time. Promotion events occur inresponse to consumer actions taken with respect to promotions displayedon the video display. For example, a promotion event is recorded whenthe consumer clicks or selects the promotion icon to navigate to the webserver hosting the promotion.

[0076] The interaction of the server system 100 and the embedded clientsystem 200 provides a system for targeting and scheduling deployment ofpromotional content to consumers of a targeted market segment, formanaging the activation of the promotional content, and for trackingconsumer response to the promotion.

[0077] Application-level processes, such as the system manager 120 ofthe server system and the system agent 220 of the network device,communicate over the data network through messages.

[0078] Messages transfer requests for action, responses to requests, andsmall data transfers. Messages are transported in the payload of anetwork transport protocol, such as TCP/IP. Messages are sent todestinations using a globally unique identifier, GUID, in order toidentify the destination network device or application. This messagingprotocol allows application-level processes to transmit data withoutknowing about the network transport interface, the device's networkaddress, or whether the device is active on the data network.

[0079] The interaction of the message router 150 with the queue managersof the source and destination processes implements the messagingprotocol. Any queue manager whether it is executing on the system server100 or the embedded client system 200 communicates with the messagerouter 150 in the same manner.

[0080]FIG. 2B illustrates the interaction between a queue manager andthe message router 150 according to the invention. For example, when thesystem manager 120 needs to transmit a message to a system agent 220,the system manager 120, in step 1000, sends the message to the queuemanager 140 indicating the message type, a globally unique identifier(i.e., GUID) of the destination device, and the message data. Thedetails on how a network device obtains a GUID is described later withreference to FIG. 3.

[0081] In step 1002, the queue manager 140 stores the message in a queuefor the system manager 120 and then attempts to establish a connectionwith the message router 150.

[0082] In brief overview, there are three steps in order for the queuemanager 140 to establish a connection to the message router 150. In step1004, the queue manager 140 determines the IP address of the messagerouter 150. In step 1006, the queue manager 140 creates and opens asocket pair connection to the message router 150 for transmittingserialized data. In step 1008, the queue manager 140 sends a message tothe message router 150 indicating that the queue manager 140 is aliveand connected and ready to transmit serialized data.

[0083] In more detail of step 1004, the queue manager 140 has one of itsproperties being the location or name of the message router 150. UsingDNS, or IP host name services, the queue manager 140 determines the IPaddress of the message router 150. If the queue manager 140 cannotresolve the IP address of the message router 150, the queue manager 140resorts to a broadcasting scheme. The queue manager 140 broadcasts alocator message on its subnet attempting to locate the message router150. If there is a message router 150 on that subnet, the message router150 responds back with its IP address. This address is cached by thequeue manager 140 for future connections.

[0084] In step 1006, the queue manager 140, knowing the IP address ofthe message router 150, creates and opens a socket pair onpredetermined, known ports for transmitting serialized data.

[0085] In step 1008, once the socket pair is opened, the queue manager140 sends a message notifying the message router 150 that the queuemanager 140 is alive and connected and has socket pairs on which to reador write serialized data.

[0086] In step 1010, the queue manager 140 writes the message fordelivery to the message router 150 through the established TCP/IP socketconnection

[0087]FIG. 2C illustrates the process of delivering the message oncereceived by the message router 150.

[0088] Upon completion of the writing of the message, the message router150 extracts the message type and the destination GUID from the messagein step 1012.

[0089] In step 1014, the message router 150 resolves the destinationGUID by looking-up the IP address associated with the GUID in the datastore 130.

[0090] In step 1016, the message is encapsulated in an IP packet, withthe appropriate destination IP address. In one embodiment, the IPaddress of the network device becomes known to the system server 100during initial registration of the network device and is stored as anattribute of the user profile.

[0091] In step 1018, the message router 150 determines the type of themessage. The message type indicates the quality of service that themessage router 150 provides for delivery of the message.

[0092] If the message type is a standard datagram, the message router150 simply transmits the message in step 1022. The message router 150will not keep track of whether the message was actually received.

[0093] If the message type indicates guaranteed delivery, the messagerouter 150 will transmit the message and wait for an acknowledgment fromthe destination device in step 1024.

[0094] If no acknowledgment is received after several attempts, thedestination is deemed unavailable and the message is stored in the datastore 130 for later retransmission when the destination is active on thedata network in step 1028. Specifically, in step 1029, the messagerouter waits for the network device 80 to become active in order todeliver the message. In one embodiment, the message router 150 isnotified that the network device is active by receiving a message fromthe network device 80 indicating its active status. In an alternativeembodiment, the message router is notified of the active status of apreviously unavailable network device by the system manager 120 whichmonitors the status of the network devices 80. When the network devicebecomes active, the message router proceeds back to step 1018 to beginthe process of delivery again.

[0095] If the acknowledgment is received, then, in step 1030, thedelivery is complete and the message is removed from the data store 130if the network device was previously unavailable.

[0096] The interaction of the message router 150 and the queue manager140 for delivering messages occurs whenever a message is sent orreceived using the messaging protocol.

[0097] In order for the server system 100 to target content andpromotions to a particular market segment, the server system 100references its stored user profiles, each user profile being acollection of user and device attributes associated with a networkdevice. All network devices whose user profiles match the attributes ofthe group profile, targeted by a system administrator, are scheduled forcontent deployment.

[0098] However, when a network device is connected to the networkinfrastructure for the first time, the system server does not have auser profile for the network device. The present invention provides anautomated system and method for initially registering and generating auser profile for an network device.

[0099]FIG. 3 is a state line diagram showing the interaction of theserver system 100 and the embedded client system 200 for generating aninitial user profile for a network device.

[0100] In step 1, the system agent 220 of the network device generatesand transmits a registration request message containing a number ofdevice attributes to the system manager 120.

[0101] The device attributes describes the network device and isconfigured during the manufacturing process of the device itself. Forexample, the network device may be configured with a model numberattribute for a particular group of network devices, such as intelligentset-top boxes, version 1.0.

[0102] In step 2, the system manager 120 receives the registrationrequest message and, in response, retrieves a globally uniqueidentifier, GUID, from an available pool of GUIDs stored in the datastore 130.

[0103] In step 3, the system manager 120 generates and transmits aregistration response message containing the assigned GUID to the systemagent 220 of the registering device.

[0104] The assigned GUID is used by the network device to identifyitself in messages transmitted to the system server 100 and to othernetwork devices. The assigned GUID is also used by the system server 100to associate the network device with a user profile within the datastore 130.

[0105] In step 4, the system agent 220 launches a web browser 210. Theweb browser 210 transmits an HTTP request to the URL (Uniform ResourceLocator) of the management console 110 for a registration web page. Theassigned GUID is included in the URL string in order to identify theregistering network device.

[0106] In step 5, the management console 110 receives the HTTP request.In response, the management console 110 makes a call via the COMinterface of the system manager 120 to retrieve the device and userattributes, if any, associated with the GUID of the registering networkdevice. The management console 110 generates the registration web pagecustomized for the registering network device. The web page istransmitted via HTTP to the web browser 210.

[0107] In step 6, the web browser 210 displays the registration web pagewherein the user submits information which will be used to generate auser profile of user attributes associated with the network device. Suchinformation includes, but is not limited to, name and addressinformation, channels frequently watched, requests for installation ofoptional value-add services and applications, and various demographicand personal information.

[0108] Upon submitting the registration data, the web browser 210transmits the user attributes, represented as HTML data via HTTP, to themanagement console 110.

[0109] In step 7, the management console 110 interprets the HTML datastream and makes calls via the COM interface of the system manager 120to update the user profiles in the data store 130 with the provided userattributes.

[0110] In step 8, the system manager 120 updates the user profile of theregistering network device with the user attributes on the data store130. After updating the user profile, the system manager 120 associatesthe user profile with group profiles whose attributes match userattributes of the user profile.

[0111] For example, the user profile will be added to the group profilefor network devices with the same model number attribute. The userprofile is added to any number of group profiles that target particularattributes of the registered user or network device. These groupprofiles are used by the system manager 120 for targeting consumers ofparticular market segments for various e-commerce promotions orapplication services.

[0112] Once the network device is registered and is associated with auser profile, the device is capable of being targeted for deployment ofcontent or promotions.

[0113]FIG. 4A is a state line diagram showing the interaction of theserver system and the embedded client system for deployment of contentand promotions to a network device. Deployment includes, but is notlimited to, downloading and installing.

[0114] Before content can be deployed to a targeted device, the contentmust be stored in the data store 130 along with a group profile and anactivation schedule. The group profile indicates the attributes ofnetwork devices to target. The activation schedule indicates when toactivate the content or promotions. Activation can be event driven,scheduled from the system server 100, or initiated by the system manager120.

[0115] In step 1, a system administrator with access to the managementconsole 110 populates a server-based web page indicating the content todeploy as well as the criteria with which to define the group profile.Additionally, the system administrator indicates when to activate thecontent. Upon submitting the data, the management console 110 makes acall to the COM interface of the system manager 120 to generate a groupprofile in the data store 130 with user profiles whose attributes matchthe criteria defined by the system administrator.

[0116] In step 2, the system manager 120 updates the data store 130creating the group profile and populating the group profile with userprofiles with matching attributes.

[0117] In step 3, the management console 110 make a call through the COMinterface of the system manager 120 to download the content or promotionto the data store 130.

[0118] In step 4, the system manager 120 writes the content to the datastore 130.

[0119] The system manager 120 is configured to schedule deployment ofcontent during off-peak hours when bandwidth utilization is typically ata minimum. For example, during the hours of 3:00 AM and 5:00 AM, morebandwidth is available for efficient deployment of content andpromotions. Alternatively, the system manager 120 monitors networkutilization and is configured to schedule deployment of content when thedetected bandwidth utilization falls below a predetermined level.

[0120] In step 5, the system manager 120 sends a download and installrequest message to each of the system agents 220 of the network deviceswhose user attributes match the attributes of the group profile. Thedownload and install message informs the system agent 220 to downloadinstall the content or promotion referenced by a GUID.

[0121] Alternatively, the system manager 120 sends a download, install,and start request message which indicates, in addition, when or underwhat event conditions the content should be activated (i.e. promotiondisplayed or an application launched).

[0122] In step 6, the system agent 220 makes a C++ object method call tothe bulk data transfer agent 260 to download the content having theprovided GUID.

[0123] In step 7, the bulk data transfer agent 260 sets up a TCP/IPsocket connection to the bulk data transfer manager 160 of the serversystem to initiate the delivery of the application.

[0124] In step 8, the bulk data transfer manager 160 delivers therequested content to the bulk data transfer agent 260 through the TCP/IPsocket connection. In cases where the connection is broken, the bulkdata transfer agent 260 and the bulk data transfer manager 160 candetect that a connection was broken and will continue the download thecontent from the point in the transfer where the break occurred.

[0125] In step 9, the bulk data transfer agent 260 notifies the systemagent 220 the result of the data transfer via an C++ object method call.

[0126] In step 10, the system agent 220 sends a message to the systemmanager 120 indicating the result of the data transfer.

[0127] After the content is installed on the targeted network device,the present invention provides a system and method for activating thatcontent. Activation allows the user to interact with the installedcontent, such as playing a game or initiating an e-commerce transaction.

[0128] There are two types of activation that the present inventionimplements—scheduled activation and event driven activation. Scheduledactivation allows the system administrator to specify when to activatethe content, whereas event driven activation allows the systemadministrator to specify an event which triggers the activation of thecontent.

[0129] Scheduled activation is implemented in two ways, predeterminedscheduling and activation by the system server.

[0130]FIG. 4B illustrates the steps associated with content activationvia predetermined scheduling. Predetermined scheduling based upon dateand time provides the most autonomy to the network device. After thecontent is deployed, the network device simply waits for the specifieddate and time to arrive, at which time it displays the content.

[0131] In step 1110, when the group profiles are configured and thecontent is downloaded to the data store 130, the system administratoralso specifies the date and time to activate the content. Where thecontent is a promotion, a duration period is specified along with theactivation date and time.

[0132] In step 1112, the system manager 120 sends the download, install,and start request message to the system agent 220 of a targeted networkdevice. In addition to requesting the system agent 220 to installcontent, the message indicates the date and time to activate theinstalled content.

[0133] If the content is a not a promotion, the system agent 220 waitsfor the specified activation date and time in step 1116.

[0134] In step 1118, the content is activated by the system agent 220 atthe specified date and time.

[0135] If the content is a promotion, the system agent 220 transfers thepredetermined date, time, and duration to the promotion notificationagent 230 in step 1120.

[0136] In step 1122, the promotion notification agent 230 waits for thespecified activation date and time.

[0137] In step 1124, the promotion is activated by the promotionnotification agent 230 at the specified activation date and time.

[0138] If the promotion is a icon or graphic linked to a URL of a hostweb server, the promotion notification agent 230 overlays the promotionon a portion of the video display built-in or attached to the networkdevice. If the promotion is audio clip or data stream, the audio isplayed through a speaker built-in or attached to the network device. Ifthe promotion is a video clip or data stream, the video overlays aportion of the video display built-in or attached to the network device.

[0139]FIG. 4C illustrates the steps associated with server activation ofcontent. Server activation of content allows control to reside at theserver system 100, therefore, maximizing the control by the institutionoperating the server system 100.

[0140] As described previously, the content is installed on the networkdevice in step 1210 with no activation information.

[0141] In step 1212, the system agent 220 waits for a start message fromthe system server 100.

[0142] In step 1214, upon request of the system administrator, thesystem manager 120 sends a start message to the system agent 220specifying the installed content to activate.

[0143] If the installed content is not a promotion, the system agentactivates the content in response to receiving the message in step 1218.This may include, but not limited to, launching an application installedwithin the network device.

[0144] If the installed content is a promotion, the system agent 220notifies the promotion notification agent 230 via a C++ object methodcall to activate the specified promotion in step 1220.

[0145] In step 1222, the promotion is activated by the promotionnotification agent 230.

[0146] Event driven activation is particularly suited for coordinatingthe activation of content with a particular event or a particular momentin a corresponding analog and/or digital video stream.

[0147] Event activation has advantages associated with high scalability.The content can be loaded in the days or weeks preceding the generaltime period when it is to be displayed.

[0148] In one embodiment, events that trigger content activation arechannel events, power events, and peripheral events. A power event is anevent relating to the power supply, such as the network device beingpowered on or off. A peripheral event is an event relating to peripheraldevices being connected or disconnected from the network device, such asa joy stick or other gaming console. A channel event is an eventrelating to the channel being watched by the user.

[0149]FIG. 4D illustrates the steps associated with event drivenactivation according to the invention.

[0150] In step 1310, when the group profiles are configured and thecontent is downloaded to the data store 130, the system administratoralso specifies an event map. An event map associates events to contentindicating when to activate the content. Where the content is apromotion, a duration period is specified as well.

[0151] In step 1312, the system manager 120 sends the event map in amessage, such as a download, install, and start message, to the systemagent 220 of a targeted network device.

[0152] If the content is not a promotion, the system agent 220 waits forthe specified event or events that trigger the activation of the contentin step 1316.

[0153] In step 1318, the system agent 220 activates the content when thespecified event or events occur.

[0154] Conversely, if the content is a promotion, the system agent 220transfers the event map to the promotion notification agent 230 in step1320.

[0155] In step 1322, the promotion notification agent 230 waits for thespecified event or events to occur.

[0156] In step 1324, the promotion notification agent 230 activates thepromotions associated with the event or events that occurred.

[0157] An example of event driven activation is where the event mapprovides for the activation of promotions involving sporting goods whenthe potential consumer has been watching a particular sports channel fora period of time. The watching of the sports channel for a period oftime triggers a channel event. The channel event triggers the activationof the promotion or promotions.

[0158] The present invention provides an additional implementation ofevent driven activation involving technology from ATVEF (AdvancedTelevision Enhancement Forum). ATVEF provides a standard for embeddingHTML tags within a video signal.

[0159] The promotion content agent 230 monitors the video signal for theembedded triggers, such as the HTML tag. The capture of this embeddedtrigger causes the activation of one or more promotions in real-timecoinciding with the video signal.

[0160] Such a system has advantages in that very little video signalediting is required. Only a small trigger has to be embedded in thevideo signal, requiring little analog video editing capabilities at thedata center.

[0161] The content, is simultaneously activated on all of the networkdevices allowing high levels of synchronization to the video signal. Forexample, the promotion can be synchronized to occur during a televisioncommercial.

[0162] The provider of the commercial simply embeds an initialization orstart HTML tag within its video signal. In response to the promotionnotification agent 230 capturing the HTML tag, the promotionnotification agent 230 activates the appropriate promotion or promotionsspecified in the event map for that HTML tag.

[0163]FIG. 4E shows one embodiment of this system on a conventionalset-top box 80 for an analog or an analog/digital video display devicesuch as a television 300. Specifically, the data and audio/video streamis received by the set-top box 80. This data audio/video stream isreceived from the head end 50 via the hub 60.

[0164] The promotion content agent 230 of the embedded client system 200monitors the video stream for the embedded trigger signal. When thetrigger signal is detected, the promotion content agent 230 inserts theassociated graphical promotion content indicated in the event map intothe analog or digital video stream to the display 310 of the television300. As a result, the promotion 320 appears on the display screen 310,overlaying the video.

[0165] User selection of this promotion through a selecting device, suchas a remote control device, sends a URL to the web browser 210 bringingthe browser window to the forefront of the display 310 of the television300. In this way, user selection of the promotion allows the user toreceive and view data from the URL enabling e-commerce transactions.

[0166] Therefore, the event-driven activation, as well as the otherscheduling options, presents promotions in an appropriate context tofurther increase the likelihood of consumer e-commerce transactions.

[0167] In addition to the initial registration process, the presentinvention includes a system and method for updating user profilesthrough uploading distributed user activity and event logs to the systemserver 100, parsing out the user and device attributes from the logs,and updating the user profiles in the data store 130.

[0168] The logs provide useful information, because the logs track avariety of information which the system can use in order to moreaccurately target users for content and promotional deployment. In oneembodiment, the logs track channel events and e-commerce transactionsinitiated through the display of promotions. In another embodiment, thelogs track peripheral events, such as the addition of a joystick andconsole for gaming purposes, power events, application events, andpromotion events. Continuous updating of user profiles through thissystem and method improves the targeting of consumers for contentdeployment, and in particular, for promotional content deployment.

[0169] In brief overview, the network device includes a loggingcomponent 250 that monitors and logs user activity and events in angeneric file format. For example, the logging component 250 monitorsuser activity at a user interface device such as the television remotechannel control. In one embodiment, the generic file format isExtensible Markup Language (XML). The format of the log files, usingXML, correspond to the structure of the user profiles in the data store130. This allows for processing of the logs in an automated fashion.

[0170] In addition, the user activity and event logs include adescription of the structure of the document itself. Using XML, thedescription of the structure of the document is the Document TypeDefinition (DTD). Providing a description of the document structurewithin the logs themselves, allows for the server system 100 to processlogs with different document structures. This avoids the necessity ofhaving to update the server system 100 every time a new documentstructure is used within the logs.

[0171]FIG. 5A is an example of a DTD for an event log where each eventthat occurs is recorded with the GUID of the device, the time of theevent, the event type, and a description of the event.

[0172]FIG. 5B is an example of an event log written in XML using the DTDof FIG. 5A. The event log contains two events, stored in the structuredescribed by the DTD. FIG. 5B demonstrates how a channel event and anapplication event are described within this log.

[0173] The uploading and parsing of these user activity and event logswill provide additional user attributes for targeting consumersincluding information regarding responses to prior promotions. If thelogs indicate that a user is interested in a particular type ofpromotion, the system server modifies the user attributes of his userprofile such that they match the attributes of a group profileassociated with that type of promotion.

[0174]FIG. 6 is a state line diagram showing the interaction of theserver system 100 and the embedded client system 200 for updating userprofiles through the upload and parsing of user activity and event logs.

[0175] In step 1, the system manager 120 sends a message to the systemagent 220 to upload its activity logs to the server system.

[0176] In step 2, the system agent 220 makes a C++ object method call tothe bulk data transfer agent 260 to upload the user activity and eventlogs.

[0177] In step 3, the bulk data transfer agent 260 sets up a TCP/IPsocket connection to the bulk data transfer manager 160 of the serversystem to initiate the delivery of the logs.

[0178] In step 4, the bulk data transfer agent 260 delivers the logs tothe bulk data transfer manager 160 through the TCP/IP socket connectionwhere they are stored in the data store 130.

[0179] In cases where the connection is broken, the bulk data transferagent 260 and the bulk data transfer manager 260 can detect that aconnection was broken and will continue the download the content fromthe point in the transfer where the break occurred.

[0180] In step 5, the bulk data transfer agent 260 notifies the systemagent 220 the result of the data transfer via a C++ object method call.

[0181] In step 6, the system agent 220 sends a message to the systemmanager 120 indicating the result of the data transfer.

[0182] In step 7, the system manager 120 makes a call to the XML fileprocessor 170 to update the user profiles from the user activity andevent logs.

[0183] In step 8, an XML file processor 170 at the server system parsesthe logs stored on the database and updates the user attributes of theuser profile of the network device. This system and method forscheduling remote uploads of the user activity and event logs providesimproves the efficiency for targeting consumers for content andpromotion.

[0184] There are situations where a user will change the hardwareconfiguration of a network device in order to expand its capabilities.In that situation, the present invention provides a system and method bywhich the network device notifies the server system 100 of a change toits hardware configuration and, in return, receives the appropriatedevice drivers to support the new hardware configuration.

[0185]FIG. 7 shows the dynamic installation of device drivers on thenetwork device according to the present invention.

[0186] Specifically, the dynamic driver installation process istriggered when the user installs a peripheral device on a network devicefor which the network device requires a driver. In the typical example,the process occurs when the user plugs in a peripheral device such as ajoy stick into a port such as a serial port or USB (universal serialbus) port.

[0187] In step 1002, the system agent 220 intercepts the plug and playstring from the peripheral device when it is attached to the USB port.

[0188] In step 1004 the system agent 220 then sends this plug and playstring to the system manager 120 via the message router 150 and thequeue managers along the path between the system agent 220 and thesystem manager 120.

[0189] In step 1006, the system manager 220 then searches for a matchingdriver in its data store 130. Specifically, it compares the plug andplay string received from the network device to plug and play strings ofsupported operating systems and supporting peripheral devices for whichdrivers are available.

[0190] In step 1008, assuming the valid device driver has been located,the system manager 120 sends a message to the system agent 220 todownload the driver providing its location in the data store 130.

[0191] In step 1010, the system agent requests the bulk data transferagent 260 on the network device to download the driver. The bulk datatransfer agent 260 then contacts the bulk data transfer manager 160 anddownloads and stores the device driver on the network device. Inparallel, the system manager 120 instructs the system agent 220 on howto install the device driver on the network device.

[0192] In step 1012, in the typical implementation, the device driver isdynamically loaded onto the network device.

[0193] In step 1014, when the driver has been successfully installed,the system agent 220 notifies the system manager 120. The systemmanager, in turn, updates the status of the network device in the systemmanager's data store 130.

[0194]FIG. 8 illustrates the mirror process in which the peripheraldevice driver is uninstalled.

[0195] In step 1016, the system agent 220 is notified when theperipheral is disconnected by the user from the network device.

[0196] In step 1018, the system agent 220 then requests an uninstallprogram from the system manager 120.

[0197] In step 1020, typically, the bulk data transfer agent 260 obtainsthe uninstalled program from the bulk data transfer manager 160.

[0198] In step 1022, the driver is then uninstalled.

[0199] In step 1024, upon the successful uninstall, the system agent 220notifies the system manager 120 that the driver has been installed andthe system manager 120 updates the network device's status.

[0200] While this invention has been particularly shown and describedwith references to preferred embodiments thereof, it will be understoodby those skilled in the art that various changes in form and details maybe made therein without departing from the scope of the inventionencompassed by the appended claims.

What is claimed is:
 1. A system for event driven content installation ona network device over a data network, the system comprising: a networkdevice detecting a change in a configuration of the network device andtransferring information regarding the configuration change; a remoteserver receiving the information regarding the configuration change andsearching a database for content corresponding to the configurationchange; the remote server sending a message notifying the network deviceof a location of the content corresponding to the configuration change;the network device requesting download of the content at the locationidentified in the message; and the server downloading the content to thenetwork device in response to the request.
 2. The system of claim 1wherein the configuration change is an addition of hardware associatedwith the network device.
 3. The system of claim 2 wherein the content isa driver, application program, configuration file, registry data orpromotion associated with the additional hardware.
 4. The system ofclaim 1 wherein the configuration change is a removal of hardwareassociated with the network device.
 5. The system of claim 4 wherein thecontent is an uninstall program for removal of software associated withthe removed hardware.
 6. The system of claim 1 wherein the content is adriver, application program, configuration file, registry data orpromotion.
 7. The system of claim 1 wherein the remote server comprisesa bulk download manager that downloads the content to the networkdevice.
 8. The system of claim 1 wherein the remote server comprises asystem manager that receives the information regarding the configurationchange and sends the message notifying the network device of thelocation of the content in the database.
 9. The system of claim 1wherein the network device comprises a system agent that detects thechange in the configuration of the network device and transfersinformation regarding the configuration change.
 10. The system of claim1 wherein the network device comprises a bulk download agent thatrequests the download of the content.
 11. A method for event drivencontent installation on a network device over a data network, the methodcomprising: detecting a change in a configuration of a network device;transferring information regarding the configuration change to a remoteserver; receiving a message from the server that provides a location ina database of the content corresponding to the configuration change; anddownloading the content from the database location identified in themessage.
 12. The method of claim 11 wherein the configuration change isan addition or removal of hardware associated with the network device.13. The method of claim 11 wherein the content is a driver, applicationprogram, configuration file, registry data or promotion.
 14. A methodfor event driven content installation on a network device over a datanetwork, the method comprising: receiving the information from a remotenetwork device regarding a change in a configuration of the networkdevice; searching a database for content corresponding to theconfiguration change; sending a message to the network device includinga location of the content corresponding to the configuration change;receiving a request for a download of the content at the location fromthe network device; and downloading the content to the network device inresponse to the request.
 15. The method of claim 14 wherein theconfiguration change is an addition or removal of hardware associatedwith the remote network device.
 16. The method of claim 14 wherein thecontent is a driver, application program, configuration file, registrydata or promotion.